<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
<script>
const getJSON = (url) =>
  // 返回promise实例，promise类里定义了then 方法
   new Promise((resolve, reject) => {
    // executor 执行器函数 同步执行
    // 将耗时的异步任务放在里面
    const xhr = new XMLHttpRequest();
    xhr.open('GET',url,true);
    xhr.send();
    xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
      // 数据  xhr/fetch 数据交换的格式 json
      const data = JSON.parse(xhr.responseText);
      resolve(data); // 成功
    }
  }
  xhr.onerror=function() {
    reject('出错了');
  }
 });

// promise 是es6提供的异步编程解决方案，优于回调函数
// promise 实例 then
getJSON('https://api.github.com/users/shunwuyu')
  // promise
  // promise 实例 resolve 后运行
.then((data) => {
  console.log(data);
})
.catch(err => {
  console.log(err);
})
</script>
</body>
</html>